// 实例属性、原型属性、静态属性
// ..............ES5................
/* function Person() {
  // name => 实例属性 => 挂载到实例上的就是实例属性
  this.name = '董超'
  // say => 实例方法
  this.say = function () {}
}

// 原型属性 => 挂载到原型上的
Person.prototype.version = '1.0'
// 原型方法
Person.prototype.test = function () {}

// Person 是函数，但也是对象
// temp 是静态属性 => 通过构造函数才能被访问到
Person.temp = '🤔'

const p = new Person()
console.log(p.temp) // undefined
console.log(Person.temp) // '🤔' */

// ES6
class Person {
  constructor() {
    // name => 实例 => 挂载到实例上的 => this 就是实例
    this.name = '刘能'
    // 实例方法
    this.test = function () {}

    // this.state = {} // #1
  }
  // 实例属性，等价于 #1
  state = {}
  // 实例属性，只不过装的是一个箭头函数
  handleClick = () => {}
  // 原型方法
  say() {
    console.log('谢广坤')
  }
  // 静态属性
  static test = 'Hello World'
  // 静态方法
  static show() {}
}

// 静态属性
/* Person.test = 'Hello World'
Person.show = function () {} */

const p1 = new Person()
const p2 = new Person()
// console.log(p1.test === p2.test) // false
// console.log(p1.say === p2.say) // true
console.log(Person.test)
